/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Domain;

import Berekenen.Calc;
import Berekenen.MaakMatrix;
import Berekenen.Tclaml;
import Draw.ColorSet;
import Exceptions.BelowOrEqualsToZeroException;
import Exceptions.InvalidNameException;
import Exceptions.NameAlreadyExistsException;
import Jama.Matrix;
import java.awt.Color;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Memet
 */
public class Prepreg extends Materiaal implements Serializable{
   



    /**
     * Maakt een nieuw materiaal
     * @param naam De naam van het materiaal
     * @param el de longitudinale stijfheid van het lamel (Pa)
     * @param et de transversale stijfheid van het lamel (Pa)
     * @param mult longitudinale transversale poissonverhouding van het lamel
     * @param glt longitudinale transversale glijdingsmodulus van het lamel (Pa)
     * @param rhol de dichtheid van het lamel (Km/m3)
     * @throws BelowOrEqualsToZeroException
     */
    @Deprecated
    public Prepreg(String naam, double el, double et, double mult, double glt, double rhol, MateriaalSoort soort, ColorSet kleur) throws BelowOrEqualsToZeroException {
        try{
        if(el <= 0 || et <= 0 || mult <= 0 || glt <= 0 || glt <= 0 || rhol <= 0)
        {
            throw new BelowOrEqualsToZeroException();
        }
        setQ(MaakMatrix.Q(el, et, mult, Tclaml.Mutl(mult, el, et), glt));
        setEl(el);
        setEt(et);
        setMult(mult);
        setGlt(glt);
        setRhol(rhol);
        setNaam(naam);
        setId(-1);
        setHide(false);
        setSoort(soort);
        setDikte(0);
        setColor(kleur);

        Data tijddate1 = new Data();
            int idtje1 = 0;
            try {
                idtje1 = tijddate1.addMateriaal(new Prepreg("tijdelijk", getEl(), getEt(), getMult(), getGlt(), getRhol(),1,1, MateriaalSoort.UNIDIRECTIONAAL, new ColorSet(Color.darkGray, Color.white),1));
            } catch (NameAlreadyExistsException ex) {
                //EDIT, Prepreg gaat niet meer gebruikt worden, dus uitgecomment.
                //Logger.getLogger(Lamel.class.getName()).log(Level.SEVERE, null, ex);
            }
            tijddate1.getMateriaal(idtje1).setId(idtje1);
            Laminaat l1 = new Laminaat();
            l1.addRowAfter(tijddate1.getMateriaal(idtje1), 0, 1);
            try {
                l1.setNaam("tijdelijk");
                //AHMET:// tijddate1.addLaminaat(l1);
                Delta.Laminaat TestAhmet = new Delta.Laminaat();
                tijddate1.addLaminaat(TestAhmet);
            } //A/ catch (NameAlreadyExistsException ex) {
            catch (Exception e) {
            //AHMET:// } catch (InvalidNameException ex) {
                //A-EDIT, Prepreg gaat niet meer gebruikt worden, dus uitgecomment.
                //Logger.getLogger(Lamel.class.getName()).log(Level.SEVERE, null, ex);
            }
            Matrix lam1 = l1.getLam();
            double el1 = Calc.E1(lam1, tijddate1)/1e9;
            double et1 = Calc.E2(lam1, tijddate1)/1e9;
            double glt1 = Calc.G12(lam1, tijddate1)/1e9;
            double mult1 = Calc.Mu12(lam1, tijddate1);
            double rhol1 = Calc.Rho(lam1, tijddate1);
            double e3_1 = Calc.E3(lam1, tijddate1)/1e9;
            double g23_1 = Calc.G23(lam1,tijddate1)/1e9;
            double g31_1 = Calc.G31(lam1,tijddate1)/1e9;
            double nu23_1 = Calc.Nu23(lam1,tijddate1);
            double nu31_1 = Calc.Nu31(lam1,tijddate1);
            setE1(el1);
            setE2(et1);
            setE3(e3_1);
            setNu12(mult1);
            setNu23(nu23_1);
            setNu31(nu31_1);
            setG12(glt1);
            setG23(g23_1);
            setG31(g31_1);
            setEl(el1);
            setEt(et1);
            setGlt(glt1);
            setMult(mult1);
            setRhol(rhol1);
            setQ(MaakMatrix.Q(getEl(), getEt(), getMult(), Tclaml.Mutl(getMult(), getEl(), getEt()), getGlt()));
        }
        catch(StackOverflowError ex)
        {
            ex.printStackTrace();
        }
    }

    public Prepreg(String naam, double el, double et, double mult, double glt, double rhol, double al, double at, MateriaalSoort soort,ColorSet kleur, int i) throws BelowOrEqualsToZeroException {
        if(el <= 0 || et <= 0 || mult <= 0 || glt <= 0 || glt <= 0 || rhol <= 0)
        {
            throw new BelowOrEqualsToZeroException();
        }
        setQ(MaakMatrix.Q(el, et, mult, Tclaml.Mutl(mult, el, et), glt));
        setEl(el);
        setEt(et);
        setMult(mult);
        setGlt(glt);
        setRhol(rhol);
        setNaam(naam);
        setId(-1);
        setHide(false);
        setSoort(soort);
        setDikte(0);
        setColor(kleur);
        setA1(al);
        setA2(at);
        setA3(at);
    }


    public Prepreg(String naam, double el, double et, double mult, double glt, double rhol, double al, double at, MateriaalSoort soort, double dikte,ColorSet kleur) throws BelowOrEqualsToZeroException {

        if(el <= 0 || et <= 0 || mult <= 0 || glt <= 0 || glt <= 0 || rhol <= 0)
        {
            throw new BelowOrEqualsToZeroException();
        }
        setQ(MaakMatrix.Q(el, et, mult, Tclaml.Mutl(mult, el, et), glt));
        setEl(el);
        setEt(et);
        setMult(mult);
        setGlt(glt);
        setRhol(rhol);
        setNaam(naam);
        setId(-1);
        setHide(false);
        setSoort(soort);
        setDikte(dikte);
        setColor(kleur);
        setA1(al);
        setA2(at);

        Data tijddate1 = new Data();
            int idtje1 = 0;
            try {
                idtje1 = tijddate1.addMateriaal(new Prepreg("tijdelijk", getEl(), getEt(), getMult(), getGlt(), getRhol(), getA1(), getA2(), MateriaalSoort.UNIDIRECTIONAAL, new ColorSet(Color.darkGray, Color.white),1));
            } catch (NameAlreadyExistsException ex) {
                //EDIT (AHMET), Prepreg klasse gaat niet meer gebruikt worden, dus uitgecomment:
                //Logger.getLogger(Lamel.class.getName()).log(Level.SEVERE, null, ex);
            }
            tijddate1.getMateriaal(idtje1).setId(idtje1);
            Laminaat l1 = new Laminaat();
            l1.addRowAfter(tijddate1.getMateriaal(idtje1), 0, 1);
            try {
                l1.setNaam("tijdelijk");
                //AHMET:// tijddate1.addLaminaat(l1);
                Delta.Laminaat TestAhmet = new Delta.Laminaat();
                tijddate1.addLaminaat(TestAhmet);
            } //A/catch (NameAlreadyExistsException ex) {
            catch (Exception e) {
            //AHMET:// } catch (InvalidNameException ex) {
                //EDIT, Prepreg gaat niet meer gebruikt worden, dus uitgecomment.
                //Logger.getLogger(Lamel.class.getName()).log(Level.SEVERE, null, ex);
            }
            Matrix lam1 = l1.getLam();
            double el1 = Calc.E1(lam1, tijddate1);
            double et1 = Calc.E2(lam1, tijddate1);
            double glt1 = Calc.G12(lam1, tijddate1);
            double mult1 = Calc.Mu12(lam1, tijddate1);
            double rhol1 = Calc.Rho(lam1, tijddate1);
            double e3_1 = Calc.E3(lam1, tijddate1);
            double g23_1 = Calc.G23(lam1,tijddate1);
            double g31_1 = Calc.G31(lam1,tijddate1);
            double nu23_1 = Calc.Nu23(lam1,tijddate1);
            double nu31_1 = Calc.Nu31(lam1,tijddate1);
            double a3_1 = Calc.A3(lam1, tijddate1);
            setE1(el1);
            setE2(et1);
            setE3(e3_1);
            setNu12(mult1);
            setNu23(nu23_1);
            setNu31(nu31_1);
            setG12(glt1);
            setG23(g23_1);
            setG31(g31_1);
            setEl(el1);
            setEt(et1);
            setGlt(glt1);
            setMult(mult1);
            setRhol(rhol1);
            setA3(a3_1);
            if(soort.equals(MateriaalSoort.UNIDIRECTIONAAL))
            {
                setG31(getG12());
                setNu31(getNu12());
                setE3(getE2());
                setA3(getA2());
            }
            setQ(MaakMatrix.Q(getEl(), getEt(), getMult(), Tclaml.Mutl(getMult(), getEl(), getEt()), getGlt()));
    }

    public int compareTo(Object o) {
        if(equals(o))
        {
            return 0;
        }
        else
        {
            return -1;
        }
    }

    
    


}